In computer user-interfaces, a user generates signals, e.g., using a keyboard or pointing device such as an electronic mouse, which are then transmitted to a computer system which processes the signals and takes action in accordance with the signals. The computer system typically converts the user-generated signals to data which conveys information to the computer system. Such data is referred to herein as "user data." Generation of signals by the user and conversion of those user-generated signals into user data are sometimes collectively referred to herein as "generating" the user data. For example, in a text-based, c-shell user-interface, signals are generated by the user pressing keys on a keyboard and into user data in the form of commands of the well-known c-shell. The c-shell user interface is a user interface computer process which is widely used and known. The c-shell user interface is most widely used in various implementations of the well known UNIX operating system. In response to the user data, the operating system, which is a computer process, processes the user data and performs operations in accordance with the received and processed user data.
In a graphics-based user-interface, the user can generate signals by identifying a graphical object displayed in a display device by manipulation of a pointing device and actuating the pointing device. In a graphical editor, such signals can cause the identified graphical object to be selected for graphical manipulation. In a navigation tool, such as a World Wide Web browser for the Internet global network, such signals can cause a document referenced by the identified object to be retrieved and displayed. Browsers are well known computer processes but are described briefly for completeness. A browser is a computer process which retrieves and displays information in accordance with command signals generated by a user. The user can determine which information to retrieve next based on previously retrieved and displayed information. Selecting information for retrieval and display based on previously retrieved and displayed information is generally referred to as navigation. In a navigation tool such as a World Wide Web browser, signals which are generated by the user manipulating a pointing device and which are received by the computer system are converted into user data which specifies information to be retrieved and displayed for the user.
In many such text and graphics based user-interfaces, history mechanisms are provided to enable the user to quickly and easily regenerate user data which have been previously generated. For example, the c-shell user-interfaces provides a history command. By invocation of the history command by the user, a number, e.g., 100, of the most recently entered c-shell commands are displayed with associated respective numerical identifiers. The following is an example of the display generated by invocation of the history c-shell command.
______________________________________ % history (1) 1 cd mydir 2 ls -Fl mystuff.* 3 print mystuff.* 4 lpq 5 history % ______________________________________
It should be noted that the first character in commands 2 and 4 is a lower case "L" and not a numeral one or an upper case "I." In the example of textual output (1), the user generated as user data the commands listed as commands 1-5 immediately prior to entering the history command in response to the command prompt, i.e., the percent sign ("%"). The user can regenerate previously generated user data by prefixing a portion of a previously submitted command, or its associated numerical identifier, with a "bang" symbol ("!"). For example, if the user generates as user data the command "!3" (pronounced "bang three"), the c-shell user interface regenerates and processes the user data "print mystuff.*" since user data "print mystuff.*" is associated with the numerical identifier "3." Similarly, if the user generates as user data the command "!l" (pronounced "bang L"), the c-shell user interface regenerates and processes the user data "lpq" since the user data "lpq" is the most recently generated user data beginning with the letter "L." To distinguish command 2 from command 4 without reference to the numerical identifier of command 2, the user can generate "!ls" as the user data.
The history command and history mechanism provided by the c-shell user interface is not particularly useflul when hundreds of commands have been previously entered. For example, the user may recall from hundreds of previously entered commands one which references files "mystuff.*." In the c-shell history mechanism, the user must either also recall all of the letters preceding "mystuff.*" in the previously entered command of interest or must locate the previously entered command of interest in a list of hundreds of the previously entered commands. If the particular previously entered command was generated relatively recently, finding the previously entered command may require searching only a relatively few commands near the end of the history list since the history list provided by the c-shell user interface is organized chronologically. However, if a considerable number of commands have been entered subsequent to the entering of the particular previously entered command of interest, searching the chronologically ordered history list for the particular command can be difficult and time consuming.
Thus, the history command of the c-shell user interface becomes complicated and impractical when a large number of commands have been entered by the user. In general, chronological organization of a history list is a poor organization since the relative order in which commands are entered is frequently less memorable than the substantive content of the commands. As a result, users of the c-shell user interface frequently disregard the c-shell history mechanism and resort to manually regenerating and re-entering the command without reference to a previously entered command.
Other history mechanisms are used in text-based user interfaces similar to the c-shell user-interface. For example, some text-based user-interfaces allow the user to regenerate previously generated user data by pressing arrow keys on a keyboard. Specifically, the user presses an up arrow key at a command prompt to retrieve the most recently entered command. Pressing the up arrow key again retrieves the next most recently entered command. The user can retrieve any of a number of previously entered commands by repeatedly pressing the up arrow key. The retrieved previously entered command is displayed in a computer display device and the user can alter the retrieved command by pressing other keys on the keyboard. The retrieved command is regenerated by pressing the Enter key of the keyboard.
Another text-based history mechanism uses a hot key to regenerate previously generated user data specified by partial user data. For example, the user presses a few keys on a keyboard and then presses the hot key to regenerate user data whose initial few characters are specified by the pressed keys. The hot key can be, for example, meta-p which is generated by the user by pressing and holding a meta key while concurrently pressing the "p" key. A meta key can be, for example, any of the "Ctrl" and "Alt" keys of a standard keyboard used in workstation computers such as the SPARCstation workstation computer available from Sun Microsystems, Inc. of Mountain View, Calif.
In this history mechanism, a user enters one or more characters of a command and presses meta-p on the keyboard. In response, the computer process retrieves and displays the most recently entered command which begins with the one or more characters entered by the user. If the user presses meta-p again, the next most recently entered command beginning with the one or more characters entered by the user is retrieved and displayed. To retrieve and display a more recently entered command, the user presses meta-n on the keyboard. This history mechanism suffers from the same deficiencies as the history c-shell command described above in that the user must remember specifically the first few letters of the previously entered command and that the history is organized chronologically. As described above, the first few letters of a previously entered command may be neither unique nor memorable.
History mechanisms are also used in graphical user-interfaces (GUIs). For example, the Netscape browser available from Netscape Communications of Mountain View, Calif. which allows users to navigate the World Wide Web of the Internet includes two history mechanisms. In the context of a World Wide Web browser, user data generated by a user identify a particular document within the World Wide Web and the browser typically retrieves and displays the document in response to the user data. A World Wide Web browser and a document within the World Wide Web are sometimes referred to herein as a Web browser and a Web document, respectively. Web documents are common and well known but are described here briefly for completeness. A Web document can be a hypertext document and, like other types of hypertext documents, can include links to locations within the Web document or to other Web documents. Such links are generally represented graphically when the Web document is displayed. User data generated by a user typically specify the universal resource locator (URL) of a specific Web document. Typically, the user gestures to identify a graphical representation of a link within a first Web document to a second Web document. The identification by gesture of the graphical representation of the link generates and transmits to the Web browser engine as user data the URL of the second page.
The first history mechanism of the Netscape Web browser is a list of some of the most recently retrieved Web documents in reverse chronological order. The list is presented to the user as a list of items of a pull-down menu. The list includes the respective titles of the previously retrieved Web documents. The title of a Web document is specified within the Web document and does not always convey to a user the nature or content of the Web document. However, the title of a Web document does typically convey to the user more information about the Web document than does the URL of the Web document.
Closely related to the history list of the Netscape Web browser is the notion of moving backwards or forwards within previously retrieved Web documents. For example, the Netscape Web browser provides a "Back" command, which is accessible to the user either through a pull down menu or through a virtual "Back" button. A virtual button is a graphical representation in a computer display device of a button which can be pressed by appropriate manipulation of a pointing device, e.g., an electronic mouse. Virtual buttons are well known and are commonly used in various GUIs and are therefore not discussed further herein. The "Back" command, when issued by the user, retrieves and displays the Web document which immediately follows the currently displayed Web document in the history list, which is organized in reverse chronological order as described above. In response to issuance of a "Forward" command by the user, the WWW browser retrieves and displays the Web document which immediately precedes the currently displayed Web document in the history list. The "Forward" command is accessible to the user either through a pull down menu or through a virtual "Forward" button. By repeatedly issuing "Back" and/or "Forward" commands, the user can sequentially traverse the history list in either direction.
Chronological history lists in the context of hypertext documents, such as Web documents, become exceedingly complicated as a user navigates the various hypertext documents. The following example illustrates this limitation. Consider a hypertext document A with links to hypertext documents B, C, and D. Consider further that hypertext documents B, C, and D include links to (i) hypertext documents E, F, and G, (ii) hypertext documents H and I, and (iii) hypertext document J, respectively. A user specifies hypertext document A for retrieval and display and thereafter gestures to identify the link to hypertext document B to cause retrieval and display of hypertext document B. Identifying a link to cause retrieval and display of a document referenced by the link is generally referred to as "following" the link. The user follows the link within hypertext document B to hypertext document hypertext document F. At this point, the history list includes user data specifying hypertext documents A, B, and F. However, if the user determines that hypertext documents B and F are not of interest, the user can follow the history list back to hypertext document A. At this point, the history list includes user data specifying hypertext documents A, B, F, B, and A. The user can then follow a link to hypertext document D, causing the history list to include user data specifying hypertext documents A, B, F, B, A, and D. If the user repeatedly follows links to hypertext documents and then reverses the followed links as described above, the history list becomes cluttered with user data redundantly specifying various hypertext documents.
The Netscape Web browser avoids such redundant specification of hypertext documents by removing from the history list links which are subsequently followed in reverse by use of the "Back" command. In the above example, when the user follows links in reverse by use of the "Back" command to go back from hypertext document F to hypertext document B and back to hypertext document A and then follows the link to hypertext document D, specification of hypertext documents F and B are removed from the history list. Thus, the history list resulting from the above exemplary hypertext document navigation in the context of the Netscape Web browser includes user data specifying hypertext documents A and D. This approach, while avoiding redundant specification of hypertext documents, also avoids recording in the history mechanism previously retrieved hypertext documents. Thus, if the user later determines that hypertext document F is of interest, the user cannot use the history list to regenerate user data specifying hypertext document F for retrieval and display.
The second history mechanism provided by the Netscape Web browser involves the notion of virtual bookmarks. A virtual bookmark stores in a history database user data specifying a Web document which the user identifies as important. For example, when the user views a Web document retrieved and displayed by the Web browser, the user determines whether the Web document is one that the user is likely to want to see again. If the user determines that the user is likely to request retrieval and display of the Web document again, the user issues a command to the Web browser to store the URL and title of the currently displayed Web document in a structure of virtual bookmarks. The user can later regenerate user data specifying the Web document for retrieval and display by selecting the title of the Web document from the structure of virtual bookmarks. This mechanism has the advantage that only Web documents which are of interest are stored in the structure of virtual bookmarks. In addition, the Netscape Web browser provides a mechanism by which the user can organize the virtual bookmarks of the structure in any order. Furthermore, the user can include in the structure headers of multiple hierarchical levels to form a hierarchical structure and organize virtual bookmarks within the hierarchical structure.
The bookmark history mechanism of Web browsers suffers from a number of disadvantages. First, the user must anticipate which Web documents the user will want to retrieve and display at a later time. The user is not always blessed with such foresight. Accordingly, the desired Web document may not be found in the structure of virtual bookmarks. In addition, users typically save scores of virtual bookmarks, sometimes in excess of one hundred virtual bookmarks. To facilitate location of a particular virtual bookmark from the structure of bookmarks, the user must generally expend time and energy to categorize and organize saved virtual bookmarks. Such organization by one user is generally specific to that user's unique perspective of the various Web documents and the utility of the various Web documents. Therefore, a second user cannot always easily navigate the particular organization established by the first user. Furthermore, the mechanism by which a user organizes virtual bookmarks requires a level of skill beyond that required for simple navigation of the World Wide Web using the Web browser. Accordingly, novice users are sometimes intimidated by this mechanism and accordingly decline to save and organize virtual bookmarks. Even for users who can manage to organize saved virtual bookmarks, doing so requires time and effort which can be devoted to more important or rewarding pursuits.
Thus, conventional history mechanisms organize previously generated user data by chronology, by the first alphabetic character of the user data, or by an organization imposed upon the user data by the user. What is needed is a history mechanism in which previously generated user data can be easily and quickly located within a structure of previously generated user data. What is further needed is a system and method for automatically generating an organizational structure for storing previously generated user data to facilitate location of previously generated user data within the organizational structure without requiring the user to construct the organizational structure. What is farther needed is a history mechanism by which a user can recall and regenerate previously generated user data without requiring the user to recall the initial character or characters of the previously generated user data and without requiring the user to search for the previously generated user data in a chronological list of previously generated user data.